<?PHP
	/************************************************************************
	*       This file, in addition to all other parts of X7 Chat are        *
	*                   Copyright 2003-2007 by Tim Chamness.                *
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* Version:          X7 Chat 3.0.0-A2                                    *
	* Release Date:     October 20, 2007                                    *
	* Author:           Tim Chamness                                        *
	* Copyright:        2003-2007 by Tim Chamness                           *
	* Website:          http://www.x7chat.com/                              *
	* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* X7 Chat 3 is free software; you can redistribute it and/or modify     *
	* it under the terms of the GNU General Public License as published by  *
	* the Free Software Foundation; either version 3 of the License, or     *
	* (at your option) any later version.                                   *
	*                                                                       *
	* X7 Chat 3 is distributed in the hope that it will be useful, but      *
	* WITHOUT ANY WARRANTY; without even the implied warranty of            *
	* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
	* General Public License for more details.                              *
	*                                                                       *
	* You should have received a copy of the GNU General Public License     *
	* along with this program.  If not, see <http://www.gnu.org/licenses/>. *
	*                                                                       *
	* Additional Terms, compatible with Section 7 of the GNU GPL v3,        *
	* apply to X7 Chat 3 and all X7 Chat 3 files, including this one.       *
	* You should have received a copy of these Additional Terms in the      *
	* file docs/COPYING.ADDITIONAL_TERMS.  If you did not receive a copy    *
	* please visit <http://www.x7chat.com/COPYING.ADDITIONAL_TERMS/>.       *
	************************************************************************/

	/**
	 * This static class calculates various statistics such as who is in the chatroom.
	 */
	class lib_stats {
		
		/**
		 * Determine how old (outdated) the stats cache is
		 *
		 * @return The number of seconds since the stats cache was last updated.
		 */
		public static function get_stats_age(){
			global $settings;
			
			$age = time()-$GLOBALS['CACHE']->gettime('stats');
			if($age < $settings['stats_update_speed'])
				return $age;
			return 0;
		}
		
		/**
		 * Get information on who is currently chatting in the chatroom.
		 *
		 * @return An array containing the usernames of everyone currently in the chatroom,
		 * 		indexed by user id.
		 */
		public static function get_all_names_online(){
			global $settings;
			
			// Check if this data is cached
			if($GLOBALS['CACHE']->gettime('stats') > time()-$settings['stats_update_speed']){
				// Load from cache
				return $GLOBALS['CACHE']->getline('stats',0);
			}
			
			$etime = time()-$settings['online_expire_seconds'];
			$names = array();
			
			$odir = $GLOBALS['CACHE']->get_group_iterator('private_messages');
			while($uid = $odir->get_next()){
				if($GLOBALS['CACHE']->gettime($uid) > $etime){
					$utemp = new lib_user(basename($uid));
					if($utemp->is_valid())
						$names[$utemp->data_cache['uid']] = $utemp->data_cache['name'];
				}else
					$GLOBALS['CACHE']->remove($uid);
			}
			
			$GLOBALS['CACHE']->write('stats',$names,x7cache::WMODE_REPLACE);
			return $names;
		}

	}

?>